
#ifndef CTEMPLATESPEZIALIZATION_H_
#define CTEMPLATESPEZIALIZATION_H_


template <class T> class CTemplateSpezialization
{
    private:

        T myElement;

    public:

    	CTemplateSpezialization(T theArg)
        {
            myElement = theArg;
        }

        T increase()
        {
            return ++myElement;
        }
};


// Define a complete different implementation for 'char' types.

template <> class CTemplateSpezialization <char>
{
	private:

		char myElement;

    public:

    	CTemplateSpezialization(char arg)
        {
            myElement = arg;
        }

        char uppercase()
        {
            if ((myElement >= 'a') && (myElement <= 'z'))
            {
                myElement += 'A' - 'a';
            }
            return myElement;
        }
};


#endif /* CTEMPLATESPEZIALIZATION_H_ */
